package com.mjf.spark.day01

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * 第一个spark WordCount案例
 */
object WordCount {
  def main(args: Array[String]): Unit = {

    // 创建SparkConf配置文件
    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
    // 创建SparkContext对象
    val sc = new SparkContext(conf)

    // 读取外部文件
    val input: RDD[String] = sc.textFile("D:/coding/spark/input")
//    val input: RDD[String] = sc.textFile(args(0))

    /**
     * flatMap：扁平化处理
     * map：转换为(word,1)的元组
     * reduceByKey：对相同的单词出现的次数进行汇总
     * collect：收集结果，触发执行
     */
    val res: RDD[(String, Int)] = input.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)

    // 将结果打印
    res.foreach(println)

    // 将结果写出到文件
//    res.saveAsTextFile(args(1))

    // 释放资源
    sc.stop()

  }
}
